package com.example.myunisdkdemo;

import android.Manifest;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
import android.app.Activity;

/**
 * PermissionUtil 类用于处理应用权限的请求和检查。
 */
public class PermissionUtil {
    private Activity activity;

    /**
     * 构造函数
     * @param activity 调用活动的上下文
     */
    public PermissionUtil(Activity activity) {
        this.activity = activity;
    }

    /**
     * 检查与请求必要权限。
     */
    public void checkPermissions() {
        String[] permissions = {
                Manifest.permission.WRITE_EXTERNAL_STORAGE,  // 文件读写权限
                Manifest.permission.INTERNET,               // 网络权限
                Manifest.permission.CAMERA                  // 相机权限
        };

        int targetSdkVersion = 0;
        try {
            PackageInfo info = activity.getPackageManager().getPackageInfo(activity.getPackageName(), 0);
            targetSdkVersion = info.applicationInfo.targetSdkVersion; // 获取目标 SDK 版本
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            // 如果目标 SDK 版本 >= 6.0，则检查权限
            if (targetSdkVersion >= android.os.Build.VERSION_CODES.M) {
                boolean allGranted = checkAllPermissionsGranted(permissions);
                if (allGranted) {
                    Log.e("Permission", "所有权限已经授权！");
                } else {
                    activity.requestPermissions(permissions, 1); // 请求权限
                }
            }
        }
    }

    /**
     * 检查所有权限是否已被授权。
     * @param permissions 权限列表
     * @return 是否所有权限都已被授权
     */
    private boolean checkAllPermissionsGranted(String[] permissions) {
        for (String permission : permissions) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
                    return false; // 如果有权限未授权，返回 false
                }
            }
        }
        return true; // 所有权限已授权
    }
}